2012/06/18

Recent entries from same category

  1. VimConf 2023 Tiny に参加しました
  2. Vim で Go 言語を書くために行った引越し作業 2020年度版
  3. Vim をモダンな IDE に変える LSP の設定
  4. ぼくがかんがえたさいきょうの Vim のこうせい 2019年 年末版
  5. VimConf 2019 を終えて

タイトルは気にしないで下さい。 call vundle#rc() call neobundle#rc() call pathogen#runtime_append_all_bundles() filetype plugin indent on よりも後でやってはいけない。上記の様な関数は何をしているかというと、本来読み込まないパスにある vim plugin ディレクトリをランタイムパスに追加します。これらプラグイン管理系の仕事は主にランタイムパスへの追加です。vim は vimrc を読み込んだ後に(GUIであればこのあとgvimrc)、runtimepath (省略名 rtp) に列挙されるディレクトリをランタイムパスとして認識していきます。この一括読み込みはこのタイミングしかありません。つまり上記の命令よりも前に filetype plugin indent on を実行してしまうと、その時点でプラグイン郡が先行で読み込まれてしまい、その後で幾らランタイムパスを変更しても有効にはならないのです。手動で設定したら行けるのに...という方は上記の読み込みを無理やりやっている事になります。最近は autoload により、上記読み込みタイミングを逃しても読み込んでくれる仕組みがあるおかげでデバッグしづらいかもしれませんが、このポイントを覚えておけば今年の夏もビキニでバッチリです。

追記
もう少し説明。filetype plugin indent on やったからといってプラグインが読み込まれるとは限らない。ftdetect/*.vim は filetype.vim が実行されるタイミングなので、後から有効にしても遅いよという事なのです。ちなみにこれを回避するおまじないとして vundle の doc には vimrc で一度 filetype off しろという tips が書いてあるらしい。
Posted at by